package us.proyecto.canarios.dao;

import java.util.List;

import javax.persistence.EntityManager;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

import us.proyecto.canarios.domain.Concurso;
import us.proyecto.canarios.domain.Pajaro;
import us.proyecto.canarios.domain.PuntuacionGrupo;

@Name("gruposDAO")
@Scope(ScopeType.SESSION)
public class GruposDAO {

    @In
    EntityManager em;

    public GruposDAO() {

    }

    public String getMaxPuntuacion(Concurso concurso){
    	List<Object> lista =em.createNativeQuery("select max(numero) from CA_PUNTUACION_GRUPO p where p.FK_CONCURSO = " + concurso.getIdConcurso()).getResultList();
    	if(lista!=null && lista.size() >0){
    		Integer arr = (Integer)lista.get(0);
    		if(arr!= null ){
	    		//Integer i = (Integer)arr0];
    			arr = arr + 1;
	    		return arr.toString();
    		}else{
    			return "1";
    		}
    	}
    	return null;
    }

    public List<PuntuacionGrupo> getListByWhere(String where){
    	 return em.createQuery("from PuntuacionGrupo c where "+ where).getResultList();
    }
    
    
    @Begin(join = true, flushMode = FlushModeType.MANUAL)
    public boolean delete(PuntuacionGrupo usu) {
        boolean correcto;

        try {
        	Pajaro objDel= em.getReference(Pajaro.class, usu.getIdPuntuacion());
            em.remove(objDel);
            em.flush();
            correcto = true;
        } catch (RuntimeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            correcto = false;
        }
        return correcto;

    }
    @Begin(join = true, flushMode = FlushModeType.MANUAL)
    public boolean save(PuntuacionGrupo usu) {
        boolean correcto;

        try {
            em.persist(usu);
            em.flush();
            correcto = true;
        } catch (RuntimeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            correcto = false;
        }
        return correcto;

    }

    @Begin(join = true, flushMode = FlushModeType.MANUAL)
    public boolean update(PuntuacionGrupo usu) {
        boolean correcto;

        try {
            em.merge(usu);
            em.flush();
            correcto = true;
        } catch (RuntimeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            correcto = false;
        }
        return correcto;

    }


}
